﻿/***********************************
//布置作业模块
***********************************/

Ext.namespace('EHSubmit.Goal.Publish');

//// 选择要布置作业的班级窗体
Ext.namespace('EHSubmit.Goal.Publish.ChooseForm');

//列模式
EHSubmit.Goal.Publish.ChooseForm.ColumnModel = new Ext.grid.ColumnModel([
    { header: '班级ID', width: 40, sortable: true, hidden: true, dataIndex: 'Id' },
    { header: '班级名', width: 100, sortable: true, hidden: false, dataIndex: 'Name' }
    
]);


// 数据源
EHSubmit.Goal.Publish.ChooseForm.DataStore = new Ext.data.Store({
    baseParams: { Op: 'listCourses', tid: '20' },      // 需要传递操作参数  tid教师的ID
    proxy: new Ext.data.HttpProxy({ url: EHSubmit.ajaxRoot + 'UploadHandler.ashx' }),  //后台具体处理  

    reader: new Ext.data.JsonReader({
        totalProperty: 'count',    //总记录个数
        root: 'data',
        id: 'Id'
    },
        [   // 数据模型
            { name: 'Id' },
            { name: 'Name' }
    ]),
    listeners: {
        /// 加载异常处理
        exception: function(proxy, type, action, options, response) {
            Ext.MessageBox.alert('数据加载错误!', '请与管理员联系');
        }
    }
});

EHSubmit.Goal.Publish.ChooseForm.GridPanel = {
    xtype: 'grid',
    title: '选择班级',
    id: 'Publish_ChooseGrid',
    frame: true,
    border: true,
    autoExpandColumn: 1, 
    //autoHeight: true,       // 自动调整高度
    height: 330,
    loadMask: true,           // 加载数据时遮住
    ds: EHSubmit.Goal.Publish.ChooseForm.DataStore,
    cm: EHSubmit.Goal.Publish.ChooseForm.ColumnModel,
    sm: new Ext.grid.RowSelectionModel({
        singleSelect: true,              // 一次只选一个
        listeners: {
            /// 选中一个作业,在右边显示相关信息
            rowselect: function(sm, row, rec) {
                ///// 显示当前选择的作业
//                var form = Ext.getCmp('doPublishForm');
//                form.enable();

//                form.getForm().findField('courseId').setValue(rec.get('Id'));
//                form.getForm().findField('goalTitle').setValue(rec.get('Name') + '-未命名作业');
            }
        }
    }),
    listeners: {
        render: function(thisGrid) {
            //----------请求单页数据-----------------
            thisGrid.store.load();
        },
        rowclick:function (thisGrid,rowIndex,e ){
            ///// 显示当前选择的作业
            var form = Ext.getCmp('doPublishForm');
            form.enable();
            
            var store = thisGrid.getStore();
            var rec = store.getAt(rowIndex);

            form.getForm().findField('courseId').setValue(rec.get('Id'));
            form.getForm().findField('goalTitle').setValue(rec.get('Name') + '-未命名作业');

        },
        //        render: function(g) {
        //            g.getSelectionModel().selectRow(0);
        //        },
        delay: 10 // Allow rows to be rendered.
    }

};


//////////////////////////////////////////////////////////////////////
//// 填写作业信息,文件等
EHSubmit.Goal.Publish.PublishForm = {
    xtype: 'form',
    id: 'doPublishForm',
    //autoHeight:true,
    height: 330,
    disabled: true,      // 未选择任何作业时不能提交
    title: '布置作业',
    fileUpload: true,    // 上传Form
    labelAlign: 'left',
    buttonAlign: 'center',
    bodyStyle: 'padding:15px;',
    frame: true,
    border: false,
    labelWidth: 80,
    monitorValid: true,

    defaults: { anchor: '95%', allowBlank: false, msgTarget: 'side' },
    items: [
        { // 作业信息
            xtype: 'textfield',
            name: 'goalTitle',
            blankText: '请在左边列表中选择一个班级',
            fieldLabel: '作业信息'
        },
        { // 隐藏域,保存GID
            xtype: 'hidden',
            name: 'courseId'
        },
        { // 上交期限
            xtype: 'datefield',
            name: 'deadline',
            format: 'Y年n月j日',
            blankText: '请选择最迟上交时间',
            fieldLabel: '最迟上交期限'
        },
        
        { // 文件上传
            xtype: 'fileuploadfield',
            emptyText: '选择一个文件',
            fieldLabel: '文件',
            name: 'filePath',
            allowBlank: true,
            buttonText: ' 浏览... '
            //            buttonCfg: {
            //                iconCls: 'upload-icon'
            //            }

        },
        { // 作业说明字段
            xtype: 'htmleditor',
            fieldLabel: '作业说明',
            emptyText: '这里填写作业说明',
            name: 'description',
            blankText: '请填写此次作业的说明',
            height: 150,
            enableAlignments: false,
            enableLists: false
            //value: 'test'
        }
    ],
    buttons: [{
        text: '布置',
        handler: function() {
            var frm = Ext.getCmp('doPublishForm');
            if (frm.getForm().isValid()) { // 验证表单
                frm.getForm().submit({     // 提交
                    url: EHSubmit.ajaxRoot + 'UploadHandler.ashx?op=addGoal',
                    waitTitle: '等待',
                    waitMsg: '正在提交，请稍后...',
                    method: 'POST',
                    success: function(form, action) {
                        var successed = action.result.success;
                        if (successed) {
                            ///////////////  提交成功处理  ///////////////////
                            Ext.MessageBox.alert('提示', '提交成功！');
                            frm.disable();

                            // 清除表单内容
                            frm.getForm().reset();
                            //////////////////////////////////////////////////
                        }
                        else {
                            Ext.MessageBox.alert('失败', '信息：' + action.result.msg);
                        }
                    },
                    failure: function(form, action) {
                        var errmsg = action.result.msg;
                        Ext.MessageBox.alert('错误', errmsg);
                    }   // failure  
                });
            } /// if is Valid
        }
    }, {
        text: '取消',
        handler: function() {
            //返回列表
        }
    }]

  
};
//////////////////////////////////////////////////////////////////////
/// 内部容器窗口包含选择和布置
EHSubmit.Goal.Publish.innerForm = {
    layout: 'column',
	border:false,
/*     title: '布置作业',
    height: 400,
    frame: true,
    border: false,*/
    defaults: { bodyStyle: 'padding:5px;', border: false },
    items: [
        {
            columnWidth: 0.5,
            layout: 'fit',
            items: [EHSubmit.Goal.Publish.ChooseForm.GridPanel]

        }, {
            columnWidth: 0.5,
            layout: 'fit',
            items: [EHSubmit.Goal.Publish.PublishForm]
        }
    ]
}


//////////////////////////////////////////////////////////////////////
//-------包含上传窗口的容器--------------
EHSubmit.Goal.Publish.Tab = {
    id:'publishForm',
    layout: 'form',
    frame: false,
    closable:true,
    title:'布置作业(主)',
    bodyStyle: 'padding:5px;',
    border: false,
    items: [EHSubmit.Goal.Publish.innerForm]
};
